জাভায় Varargs (Variable Arguments) ব্যবহার করে জেনেরিক মেথড তৈরি করা সম্ভব। এটি ডেভেলপারদের একই মেথডে ভিন্ন ভিন্ন সংখ্যক আর্গুমেন্ট পাস করার সুবিধা দেয়। যখন জেনেরিক্সের সাথে Varargs ব্যবহার করা হয়, তখন এটি টাইপ সেফ এবং ফ্লেক্সিবল পদ্ধতিতে কাজ করে।
Varargs কি?
Varargs মেথডে একটি ভেরিয়েবল সংখ্যক আর্গুমেন্ট পাস করার অনুমতি দেয়। এটি ... চিহ্ন ব্যবহার করে ডিক্লেয়ার করা হয়:
public void methodName(Type... varargs) {
// Method implementation
}
Generic Method এবং Varargs এর Syntax
public static <T> void methodName(T... args) {
// Method implementation
}
<T>: জেনেরিক টাইপ প্যারামিটার যা মেথডে ব্যবহৃত হয়।T... args: Varargs প্যারামিটার, যা মেথডে একটি ভেরিয়েবল সংখ্যক আর্গুমেন্ট গ্রহণ করে।
Generic Varargs Method এর উদাহরণ
উদাহরণ ১: মেথডে ডেটা প্রিন্ট করা
public class GenericVarargsExample {
public static <T> void printElements(T... elements) {
for (T element : elements) {
System.out.println(element);
}
}
public static void main(String[] args) {
printElements(1, 2, 3, 4); // Integer values
printElements("Java", "Generics", "Varargs"); // String values
}
}
আউটপুট:
1
2
3
4
Java
Generics
Varargs
উদাহরণ ২: সর্বোচ্চ উপাদান খুঁজে বের করা
public class GenericMaxFinder {
public static <T extends Comparable<T>> T findMax(T... elements) {
if (elements == null || elements.length == 0) {
throw new IllegalArgumentException("No elements provided");
}
T max = elements[0];
for (T element : elements) {
if (element.compareTo(max) > 0) {
max = element;
}
}
return max;
}
public static void main(String[] args) {
System.out.println(findMax(1, 5, 3, 9, 2)); // Integer values
System.out.println(findMax("Apple", "Orange", "Banana")); // String values
}
}
আউটপুট:
9
Orange
Varargs এবং টাইপ সেফটি
Varargs এর মাধ্যমে জেনেরিক্স ব্যবহারে টাইপ সেফটি নিশ্চিত করতে জাভা একটি কম্পাইল-টাইম সতর্কবার্তা দেয়। উদাহরণস্বরূপ:
public static <T> void addToList(List<T> list, T... elements) {
for (T element : elements) {
list.add(element);
}
}
সতর্কবার্তা:
Note: Generic array creation for varargs parameter is unsafe
সতর্কবার্তা এড়ানোর জন্য @SafeVarargs
যখন জেনেরিক Varargs মেথড টাইপ সেফ, তখন @SafeVarargs অ্যানোটেশন ব্যবহার করা যেতে পারে। এটি কম্পাইল-টাইম সতর্কবার্তা দূর করে।
import java.util.List;
public class SafeVarargsExample {
@SafeVarargs
public static <T> void addToList(List<T> list, T... elements) {
for (T element : elements) {
list.add(element);
}
}
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
addToList(stringList, "Java", "Generics", "Varargs");
System.out.println(stringList);
}
}
আউটপুট:
[Java, Generics, Varargs]
Varargs এর সুবিধা
- ফ্লেক্সিবিলিটি: একাধিক আর্গুমেন্ট সহজে পাস করা যায়।
- কোড সিম্পলিসিটি: একই মেথড বিভিন্ন সংখ্যক ইনপুট গ্রহণ করতে পারে।
- টাইপ সেফটি: জেনেরিক্সের মাধ্যমে টাইপ সেফ কোড নিশ্চিত করা যায়।
সতর্কতা
- জেনেরিক্স এবং Varargs একত্রে ব্যবহার করলে জাভার Type Erasure এর কারণে কিছু সীমাবদ্ধতা থাকে।
- জেনেরিক Varargs এর ক্ষেত্রে
@SafeVarargsব্যবহারে সতর্ক থাকা উচিত।
Varargs এর মাধ্যমে Generic Method তৈরি করা জাভার একটি শক্তিশালী বৈশিষ্ট্য, যা ফ্লেক্সিবল এবং টাইপ সেফ কোড লিখতে সাহায্য করে। তবে, Type Erasure এর সীমাবদ্ধতা এবং টাইপ সেফটি নিশ্চিত করতে ডেভেলপারদের সতর্ক থাকা উচিত।
Read more